<?php
declare (strict_types = 1);

namespace app\controller\v1\api;

use app\service\TaskCategoryServce;
use app\BaseController;
use app\common\Send;
use think\App;
use think\Request;
use app\validate\TaskCategory AS TaskCategoryValidate;
class TaskCategory extends BaseController
{
    use Send;

    protected $taskCategoryService;

    public function __construct(App $app, TaskCategoryServce $taskCategoryService)
    {
        parent::__construct($app);
        $this->taskCategoryService = $taskCategoryService;
    }

    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        $data = $this->request->param();
        $result = $this->taskCategoryService->list($data);
        return self::success($result);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {

        $data = $request->param();
        (new TaskCategoryValidate)->goCheck($data);
        $result = $this->taskCategoryService->save($data);
        return self::success($result);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        (new TaskCategoryValidate)->goCheck($request->param());
        $this->taskCategoryService->update($id, $request->param());
        return self::success("更新成功");
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = $this->taskCategoryService->delete($id);
        return self::success($result);
    }


    /**
     * 获取任务分类列表 键值返回
     *
     * 该方法用于处理请求并返回任务分类列表信息它从请求中获取必要的参数，
     * 调用服务层方法来获取所有任务分类信息，并返回格式化的成功响应结果
     *
     * @param Request $request 用户请求对象，包含获取列表所需的参数
     * @return array 返回包含任务分类列表的响应数组
     */
    public function list()
    {
        // 调用服务层方法获取所有任务分类信息
        $result = $this->taskCategoryService->getAllKeyValue();

        // 返回格式化的成功响应结果
        return self::success($result);
    }
}
